<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
    </head>
    <body>
        <script>
            /* 
            其实和买卖股票的最佳时机Ⅱ是一样的，只是卖的时候多减去一个手续费
            有两个状态 0表示持有股票  1表示不持有股票

            dp[i][0]表示第i天持有股票时的最大利润

            递推公式
            dp[i][0]=Math.max(dp[i-1][0],dp[i-1][1]-prices[i])
            dp[i][1]=Math.max(dp[i-1][1],dp[i-1][0]+prices[i]-fee)
            
            //初始化dp数组
            dp[0][0]=-prices[0]
            dp[0][1]=0
            */
            var maxProfit = function (prices, fee) {
                let dp = new Array(prices.length).fill().map(() => new Array(2).fill(0))
                dp[0][0] = -prices[0]
                for (let i = 1; i < prices.length; i++) {
                    dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] - prices[i])
                    dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] + prices[i] - fee)
                }
                return dp[dp.length - 1][1]
            }
            console.log(maxProfit([1, 3, 2, 8, 4, 9], 2))
        </script>
    </body>
</html>
